#include <bits/stdc++.h>
using namespace std;
constexpr int MAXN = 100005;
constexpr double SMALL = 0.0001;
int car_d[MAXN], car_v[MAXN], car_a[MAXN];
int eyes[MAXN], snap[1000006];
int ceil_(double x){
    return int(x+0.9999);
}
void solve(){
    // memset(snap, 0, 1000001*4);
    int ans = 0;
    int n, m, L, V;
    int d, v, a;
    double x;
    cin >> n >> m >> L >> V;
    // cout << "!" << V << endl;
    for(int i=0; i<n; i++){
        cin >> car_d[i] >> car_v[i] >> car_a[i];
        if(i == 9){
            // cout << car_d[i] << ' ' << car_v[i] << ' ' << car_a[i];
        }
    }
    int last = 0;
    for(int i=0; i<m; i++){
        cin >> eyes[i];
        last = max(last, eyes[i]);
    }
    int last_car = MAXN*100;
    for(int i=0; i<n; i++){
        int tmp = ans;
        int d=car_d[i],v=car_v[i], a=car_a[i];
        if(a == 0){
            if(v > V && d <= last){
                snap[d]++;
                last_car = max(d, last_car);
                ans++;
            }
        }else{
            x = (V*V-v*v)/(2.0*a);
            if(a > 0){
                if(x < 0 && d <= last){
                    last_car = max(d, last_car);
                    snap[d]++;
                    ans++;
                }
                else if (ceil_(x+d) <= L && ceil_(x+d) <= last){
                    last_car = max(last_car, ceil_(x+d));
                    ans++;
                }
            }
            // if(a < 0){
            //     if(v > V){
            //         ans++;
            //         snap[d]++;
            //         if (ceil_(x+d) <= L){
            //             snap[ceil_(x+d)]--;
            //         }
            //     }
            // }
        }
        // if(tmp != ans){
        //     cout << "<" << i << ">";
        // }
    }
    int cha=0;
    int cnt = 0;
    for(int i=0; i<m; i++){
        if(eyes[i] <= last_car){
            cnt++;
        }
    }
    if(ans == 0)
        cout << ans << ' ' << cnt << '\n';
    else
        cout << ans << ' ' << cnt-1 << '\n';
}
int main(){
    freopen("detect.in", "r", stdin);
    freopen("detect.out", "w", stdout);
    ios::sync_with_stdio(0);
    // cin.tie(0);
    int t;
    cin >> t;
    for(int i=0; i<t; i++)
        solve();
    return 0;
}